package cn.tedu.oop2;
/*本类用于继承的入门案例*/
public class TestExtends {
    public static void main(String[] args) {
//        分别创建3个类的对象
        Animal a = new Animal();
        Cat c = new Cat();
        MiaoMiao m = new MiaoMiao();
//        利用对象调用方法进行测试
        /*继承相当于是子类将父类的功能复制了一份
        继承还具有传递性，爷爷的功能会传给爸爸，爸爸的功能会传给孙子*/
        a.eat();//爷爷类使用自己的方法
        c.eat();
        m.eat();
    }
}
/*我们通过extends关键字建立子类与父类的继承关系，格式：子类 extends 父类*/
/*java只支持单继承，一个子类只能有一个父类，都是一个父类可以有多个子类*/
//创建小动物类--爷爷类
class Animal{
//添加一个爷爷类的普通方法
    public void eat(){
        System.out.println("小动物Animal吃啥都行~");
    }
}
//创建小猫类--父类
/*继承是is a的关系，比如小猫是小动物，MiaoMiao是一只小猫
* 继承要求子类必须是父类的一种下属类型，依赖性非常强，强耦合*/
class Cat extends Animal{
//定义爸爸类中的属性
    int a = 10;//普通属性
    private int b =100;//私有属性
}
//创建MiaoMiao类---孙子类
class MiaoMiao extends Cat{
//定义孙子类的方法
    /*子类可以拥有自己独有的方法，实现了功能的拓展，青出于蓝于胜与蓝*/
    public void studyjava(){
        System.out.println("正在学java");
        System.out.println(a);
        /*5 子类继承父类以后，可以使用父类的所有非私有资源
        * 注意：这个私有资源由于被private修饰，所以没有访问权限*/
    }
}